package com.android.openapp.data;

import java.util.LinkedHashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.graphics.Color;

import com.android.openapp.R;
import com.socrata.api.HttpConnection;
import com.socrata.data.View;
import com.socrata.data.View.Row;

public class Architettura extends Place{
	
	//public View ArchitettureCol;
	
	Row architettura;
	
	LinkedHashMap<String, Object> coord;
	/*
	String DENOMINAZIONE;
	String TIPO_ARCHITETTURA;
	String PROVINCIA;
	String COMUNE;
	String LOCALITA;
	String INDIRIZZO;
	String UBICAZIONE_NON_VIABILISTICA;
	String AUTORI;
	String STILE_SCUOLA;
	String DATAZIONE;
	String STATO_CONSERV;
	String USO_ATTUALE;
	String USO_STORICO;
	String latitude;
	String longitude;
	*/

	private double lat;

	private double lon;
	
	@SuppressWarnings("unchecked")
	public Architettura(Row arch) throws JSONException {
		super.setMetadata(Place.listmetadati.get(2));
		super.setRow(arch);
		type=2;
		setBcolor(Color.CYAN);
		setPhotoRes(R.drawable.architetture_icon);
		/*
		this.ArchitettureCol=Place.listmetadati.get(2);
		this.architettura=arch;
		DENOMINAZIONE=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("DENOMINAZIONE"));
		TIPO_ARCHITETTURA=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("TIPO_ARCHITETTURA"));
		PROVINCIA=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("PROVINCIA"));
		COMUNE=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("COMUNE"));
		LOCALITA=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("LOCALITA"));
		INDIRIZZO=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("INDIRIZZO"));
		UBICAZIONE_NON_VIABILISTICA=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("UBICAZIONE_NON_VIABILISTICA"));
		AUTORI=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("AUTORI"));
		STILE_SCUOLA=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("STILE_SCUOLA"));
		DATAZIONE=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("DATAZIONE"));
		STATO_CONSERV=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("STATO_CONSERV"));
		USO_ATTUALE=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("USO_ATTUALE"));
		USO_STORICO=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("USO_STORICO"));
		
		 latitude=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("lat"));
		 longitude=(String)architettura.getDataField(ArchitettureCol.getColumnByIdentifier("lng"));
		 super.setCoord(Double.parseDouble(latitude), Double.parseDouble(longitude));
		 */
		 //data=super.getRow().getDataFieldsForSerialization();
		 super.setMapData(super.getRow().getDataFieldsForSerialization());
		 
		 //System.out.println(data);
		 coord=(LinkedHashMap<String, Object>) super.getRow().getDataField(View.getColByDataType(super.getMetadata(), "location"));
		 if(coord.get("latitude")!=null && coord.get("longitude")!=null)
			 super.setCoord((String) coord.get("latitude"), (String) coord.get("longitude"));
		 else{
			 
		            JSONObject jsonObject=HttpConnection.getLocationInfo(getAddress());
		            
					lon = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
		                .getJSONObject("geometry").getJSONObject("location")
		                .getDouble("lng");

		            lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
		                .getJSONObject("geometry").getJSONObject("location")
		                .getDouble("lat");
		            super.setCoord(lat, lon);
		        
		 }
		 
		
	}
	
	@Override
	public String getDenominazione() {
		// TODO Auto-generated method stub
		return super.getStringValue("DENOMINAZIONE");
	}

	@Override
	public String getTipologia() {
		// TODO Auto-generated method stub
		return super.getStringValue("TIPO_ARCHITETTURA").toUpperCase();
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getAddress() {
		StringBuilder builder = new StringBuilder();
		
		if (getStringValue("INDIRIZZO") != null){
			builder.append(getStringValue("INDIRIZZO")).append(", ");
		}
		if (getStringValue("LOCALITA") != null){
			builder.append(getStringValue("LOCALITA")).append(", ");
		}
		if(getStringValue("COMUNE") != null){
			builder.append(getStringValue("COMUNE")).
			append(", ");
		}
		if(getStringValue("PROVINCIA") != null){
			builder.append(getStringValue("PROVINCIA"));
		}
		return builder.toString();
	}

	@Override
	public String getContactInfo() {
		 //non abbiamo info di contatto... lo uso per info extra
		StringBuilder builder = new StringBuilder();
		if (getStringValue("DATAZIONE") != null)
			builder.append(getStringValue("DATAZIONE"));
		else
			builder.append("");
		return builder.toString();
	}
	
}
